package entities;

import java.io.Serializable;
import java.util.Date;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Transient;

@Entity
@Table(name="movimientos")
public class MovimientoEntity implements Serializable{

	@Transient
	private static final long serialVersionUID = 1L;
	
	@Id @GeneratedValue
	private Integer id;
	private Integer cantidadMinima;
	@ManyToOne(cascade=CascadeType.ALL)
	@JoinColumn(name="idDeposito")
	private AreaEntity areaDeposito;
	private Date fechaOperacion = null;
	@ManyToOne(cascade=CascadeType.ALL)
	@JoinColumn(name="idUsuario")
	private PersonalEntity usuario;
	private String motivo;
	

	public MovimientoEntity() {
//		usuario = new PersonalEntity();
	}

	
	public MovimientoEntity(AreaEntity areaDeposito, PersonalEntity usuario) {
		super();
		this.areaDeposito = areaDeposito;
		this.usuario = usuario;
	}




	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public Integer getCantidadMinima() {
		return cantidadMinima;
	}
	public void setCantidadMinima(Integer cantidadMinima) {
		this.cantidadMinima = cantidadMinima;
	}
	public AreaEntity getAreaDeposito() {
		return areaDeposito;
	}
	public void setAreaDeposito(AreaEntity areaDeposito) {
		this.areaDeposito = areaDeposito;
	}
	public Date getFechaOperacion() {
		return fechaOperacion;
	}
	public void setFechaOperacion(Date fechaOperacion) {
		this.fechaOperacion = fechaOperacion;
	}
	public PersonalEntity getUsuario() {
		return usuario;
	}
	public void setUsuario(PersonalEntity usuario) {
		this.usuario = usuario;
	}
	public String getMotivo() {
		return motivo;
	}
	public void setMotivo(String motivo) {
		this.motivo = motivo;
	}


	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result
				+ ((areaDeposito == null) ? 0 : areaDeposito.hashCode());
		result = prime * result
				+ ((cantidadMinima == null) ? 0 : cantidadMinima.hashCode());
		result = prime * result
				+ ((fechaOperacion == null) ? 0 : fechaOperacion.hashCode());
		result = prime * result + ((id == null) ? 0 : id.hashCode());
		result = prime * result + ((motivo == null) ? 0 : motivo.hashCode());
		result = prime * result + ((usuario == null) ? 0 : usuario.hashCode());
		return result;
	}


	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		MovimientoEntity other = (MovimientoEntity) obj;
		if (areaDeposito == null) {
			if (other.areaDeposito != null)
				return false;
		} else if (!areaDeposito.equals(other.areaDeposito))
			return false;
		if (cantidadMinima == null) {
			if (other.cantidadMinima != null)
				return false;
		} else if (!cantidadMinima.equals(other.cantidadMinima))
			return false;
		if (fechaOperacion == null) {
			if (other.fechaOperacion != null)
				return false;
		} else if (!fechaOperacion.equals(other.fechaOperacion))
			return false;
		if (id == null) {
			if (other.id != null)
				return false;
		} else if (!id.equals(other.id))
			return false;
		if (motivo == null) {
			if (other.motivo != null)
				return false;
		} else if (!motivo.equals(other.motivo))
			return false;
		if (usuario == null) {
			if (other.usuario != null)
				return false;
		} else if (!usuario.equals(other.usuario))
			return false;
		return true;
	}
	
	
}
